home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Ebooks / Thinking in C++ V2 / C15 / Slice.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-25  |  652 b   |  35 lines

  1. //: C15:Slice.cpp
  2. // From Thinking in C++, 2nd Edition
  3. // Available at http://www.BruceEckel.com
  4. // (c) Bruce Eckel 1999
  5. // Copyright notice in Copyright.txt
  6. // Object slicing
  7. #include <iostream>
  8. using namespace std;
  9.  
  10. class Base {
  11.   int i;
  12. public:
  13.   Base(int ii = 0) : i(ii) {}
  14.   virtual int sum() const { return i; }
  15. };
  16.  
  17. class Derived : public Base {
  18.   int j;
  19. public:
  20.   Derived(int ii = 0, int jj = 0)
  21.     : Base(ii), j(jj) {}
  22.   int sum() const { return Base::sum() + j; }
  23. };
  24.  
  25. void call(Base b) {
  26.   cout << "sum = " << b.sum() << endl;
  27. }
  28.  
  29. int main() {
  30.   Base b(10);
  31.   Derived d(10, 47);
  32.   call(b);
  33.   call(d);
  34. } ///:~
  35.